package main

import "fmt"

// Animal 结构体
type Animal struct {
	Name string
	Age  uint8
}

func (a *Animal) Shout() {
	fmt.Println("我会大声的叫喊")
}
func (a *Animal) ShowInfo() {
	fmt.Printf("我叫%v， 年龄是%v \n", a.Name, a.Age)
}

// Cat 结构体
type Cat struct {
	Animal
	Age int
}

// 特有方法
func (c *Cat) scratch() {
	fmt.Println("我是小猫，会挠人")
}

// 重写方法
func (a *Cat) ShowInfo() {
	fmt.Printf("~~~~~~~~~我叫%v， 年龄是%v \n", a.Name, a.Age)
}
func main() {
	c := &Cat{}
	c.Name = "小猫"
	c.Age = 12
	c.Animal.Age = 24
	c.scratch()
	c.ShowInfo()
	c.Animal.ShowInfo()
}
